/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package cliente;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import javax.swing.JOptionPane;

/**
 *
 * @author Juan
 */
public class MCliente extends Thread{
    private int port;
    private String url;
    Vcliente cliente;
    private Socket s;
    private String nick;
    private boolean bConectado=false;

    public MCliente(int port, String url,String nick ,Vcliente cliente) {
        this.port = port;
        this.url = url;
        this.cliente = cliente;
        this.nick=nick;
    }    
    
    public void run(){
        try {   
            s= new Socket(url, port);
            DataInputStream dis = new DataInputStream(s.getInputStream());
            enviarTrama(1, nick);
            bConectado=true;
            while (bConectado) {
                int nCodigo=dis.readInt();
                String sTrama=dis.readUTF();
                switch(nCodigo){
                    case 1:
                        cliente.nuevaPersona(sTrama);
                        break;
                    case 2:
                        cliente.mensajeRecibido(sTrama);
                        break;
                    case 3:
                        try {
                            int nPos=Integer.parseInt(sTrama);
                            cliente.borrarPersona(nPos);
                        } catch (Exception e2) {
                        }
                        break;
                }
                
            }
            //JOptionPane.showMessageDialog(cliente, "Se ha podido establecer la conexion");
        } catch (NumberFormatException | IOException e) {
            JOptionPane.showMessageDialog(cliente, "No se pudo establecer la conexion");
        }
    }
    public void enviarMensaje(String sMensaje){
        enviarTrama(2, sMensaje);
    }
    public void enviarTrama(int nCodigo,String sTrama){
        try {
            DataOutputStream dos = new DataOutputStream(s.getOutputStream());
            dos.writeInt(nCodigo);
            dos.writeUTF(sTrama);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(cliente, "No se pudo enviar el mensaje");
        }
    }
}
